@@ -160,7 +160,7 @@ def lensman_photo_upload_api(request): |
||
160 | 160 |
# 判断通过 session_id 创建的群组是否存在,如果不存在,则直接创建 |
161 | 161 |
group, group_created = GroupInfo.objects.get_or_create(session_id=session_id, group_from=GroupInfo.SESSION_GROUP, defaults={ |
162 | 162 |
'group_id': CurtailUUID.uuid(GroupInfo, 'group_id'), |
163 |
- 'admin_id': user_id, |
|
163 |
+ # 'admin_id': user_id, # 摄影师非管理员,首个扫码进群的用户为管理员 |
|
164 | 164 |
'group_name': user.final_nickname, |
165 | 165 |
'group_default_avatar': 0, |
166 | 166 |
}) |
@@ -100,6 +100,7 @@ def upload_photo(request): |
||
100 | 100 |
|
101 | 101 |
|
102 | 102 |
@logit |
103 |
+@transaction.atomic |
|
103 | 104 |
def session_join_api(request): |
104 | 105 |
""" Session 详情 """ |
105 | 106 |
user_id = request.POST.get('user_id', '') |
@@ -124,9 +125,9 @@ def session_join_api(request): |
||
124 | 125 |
user_id = user.user_id |
125 | 126 |
|
126 | 127 |
# 判断通过 session_id 创建的群组是否存在,如果不存在,则直接创建 |
127 |
- group, group_created = GroupInfo.objects.get_or_create(session_id=session_id, group_from=GroupInfo.SESSION_GROUP, defaults={ |
|
128 |
+ group, group_created = GroupInfo.objects.select_for_update().get_or_create(session_id=session_id, group_from=GroupInfo.SESSION_GROUP, defaults={ |
|
128 | 129 |
'group_id': CurtailUUID.uuid(GroupInfo, 'group_id'), |
129 |
- 'admin_id': lensman_id, |
|
130 |
+ # 'admin_id': lensman_id, |
|
130 | 131 |
'group_name': lensman.final_nickname, |
131 | 132 |
'group_default_avatar': 0, |
132 | 133 |
}) |
@@ -141,7 +142,7 @@ def session_join_api(request): |
||
141 | 142 |
'current_id': current_id, # 通过扫描 session_id 二维码进群的用户,默认可以查看该群组所有照片 |
142 | 143 |
'nickname': nickname or user.final_nickname, |
143 | 144 |
'avatar': user.avatar, |
144 |
- 'admin': group_created, |
|
145 |
+ # 'admin': group_created, |
|
145 | 146 |
'user_status': GroupUserInfo.PASSED, |
146 | 147 |
'passed_at': tc.utc_datetime(), |
147 | 148 |
}) |
@@ -150,6 +151,14 @@ def session_join_api(request): |
||
150 | 151 |
group_user.user_status = GroupUserInfo.PASSED |
151 | 152 |
group_user.save() |
152 | 153 |
|
154 |
+ # 管理员处理 |
|
155 |
+ tobe_admin = not GroupUserInfo.objects.filter(admin=True, status=True).exists() |
|
156 |
+ if tobe_admin: |
|
157 |
+ group.admin_id = user_id |
|
158 |
+ group.save() |
|
159 |
+ group_user.admin = True |
|
160 |
+ group_user.save() |
|
161 |
+ |
|
153 | 162 |
# Redis 群组用户数据缓存 |
154 | 163 |
group_users = set_group_users_info(group) |
155 | 164 |
|
@@ -211,7 +220,7 @@ def session_join_api(request): |
||
211 | 220 |
) |
212 | 221 |
latest_photo = group_photos.first() |
213 | 222 |
|
214 |
- return response(200, 'Apply Success', u'申请成功', { |
|
223 |
+ return response(200, 'Apply Join Session Group Success', u'申请加入摄影师群成功', { |
|
215 | 224 |
'current_id': latest_photo and latest_photo.pk or current_id, |
216 | 225 |
'photos': [photo.photo_info(user_id) for photo in group_photos], |
217 | 226 |
'group_id': group_id, |